Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. Because computer programs are often large, installing them can be a lengthy process that consumes the vast majority of the computer's processing power. Customers naturally wonder whether the installation process is proceeding successfully. Since uncertainty produces anxiety, displaying status as the installation process progresses is an important technique for providing a better experience to customers. An accurate status bar that shows steady progress toward completion gives customers a comfortable feeling because they can see that the install is making progress and they can estimate how much time remains until completion.
A problem that complicates providing accurate installation status is that today's software often includes a variety of sub-programs that originated from a variety of sources, even if the sub-programs are all being installed together as one package. For example, the sub-programs may be written by the customer, provided by the manufacturer of the computer hardware, or provided by third parties. Also these sub-programs may be general purpose programs that customers execute unaltered or specialized sub-programs that are customized for the customers' particular application. When a software solution includes multiple sub-programs, often a single integration program is responsible for coordinating the installation of all of the sub-programs, but this integration program only has status information available when it has control. Once the integration program passes control to the sub-programs, which install themselves, the integration program has no ability to obtain status. Further, since the sub-programs originate from a variety of sources, they do not necessarily provide status regarding the progress they are making. To make matters worse, most installation time is used by the sub-programs and very little time is used executing the integration program. Thus, most of the installation process occurs with the integration program receiving little status information.
One technique for handling the aforementioned problems is to estimate, before the install process starts, the time that the installations of the various sub-programs are likely to need and then update a status bar with the current elapsed time as a percentage of the estimated time, as the current time progresses during the actual installation. This estimation technique works well, so long as the installation encounters no problems and the estimated installation time is near the actual installation time. But, if the installation takes longer than expected, then the customer receives inaccurate status information. Even worse, if the installation hangs, the status bar still indicates that the installation is proceeding normally.
Thus, a better technique is needed for providing status information during installation of software programs.